#ifndef TROYCONTROLLER_H
#define TROYCONTROLLER_H

#include <QObject>

#include "history.h"
#include "troy.h"
#include "robotcommands.h"

/**
 * @brief Provides some general advanced functionality for manipulating a Troy model.
 *
*/
class TroyController : public QObject
{
    Q_OBJECT

private:
    Troy* _model;

public:
    explicit TroyController(Troy* model, QObject *parent = 0);

    enum MirroringOption{
        LEFT_TO_RIGHT,
        RIGHT_TO_LEFT,
        JOINT
    };

    void mirror(MirroringOption option, int jointID = 0);
    void mirror(RobotComponent* component);

signals:

public slots:

};

#endif // TROYCONTROLLER_H
